package persistencia.dominio.testGrupos;

import persistencia.dominio.*;
import persistencia.Persistencia;
import server.Singleton;
import server.aula.ControlAula;
import server.grupo.ControlParticipanteGrupo;
import comun.constantes.*;

import java.io.*;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Vector;

public class VerificacionAlumnos {
 static Persistencia persistencia = null;
 static Connection conexionSQL = null;
 //Aula y sus Comisiones para contraolar sus alumnos
 static Curso aulaPiloto = null;
 static Comision comision1DelAulaPiloto = null;
 static Comision comision2DelAulaPiloto = null;
 static Comision comision3DelAulaPiloto = null;
 
  static public void initPersistencia(){
	  persistencia = new Persistencia();
	  persistencia.crearTransaccion();
	  //REGISTER DRIVER
	  try {
	      Driver d = (Driver)Class.forName(Singleton.driver).newInstance();
	  }catch (Exception e){
	      System.out.println(e);
	  }

	  //GET CONNECTION
	  conexionSQL=null;
	  try{
	      conexionSQL = DriverManager.getConnection(Singleton.url,Singleton.userName,Singleton.password);
	  }catch(Exception e){
	      System.out.println(e);
	  }
  }
 
  static public boolean commit(){
	 try {
		  persistencia.commit();
		  conexionSQL.close();
	      return true;
	  }catch(Exception ex){
		  ex.printStackTrace();
		  persistencia.rollback();
		  try{
		     conexionSQL.close();
		  }catch(SQLException ex1){
		      ex1.printStackTrace();
		      return false;
		  }
		     return false;
	  }
  }
 
  static public boolean rollback(){
	 try {
		 persistencia.rollback();
		 conexionSQL.close();
		 return true;
	 }catch (Exception ex){
		 ex.printStackTrace();
		 return false;
	 }
  }
  
  public static void verificacion(){
	  try{
		  initPersistencia(); 
		  System.out.println("=======================INICIO LA VERIFICACION==========================");
		  levantarAulaYComisiones();
		  verificarAlumnos();
		  System.out.println("======================TERMINO LA VERIFICACION==========================");
		  commit();
	  }catch(Exception ee){
			ee.printStackTrace();
			rollback();
	  }  
  }
  
  private static void levantarAulaYComisiones()throws Exception{
		try{
			//Para el SERVIDOR DE PRUEBA
			aulaPiloto = (Curso)persistencia.getObjectoPorId("persistencia.dominio.Curso",new Long(19738759));
			comision1DelAulaPiloto =(Comision)persistencia.getObjectoPorId("persistencia.dominio.Comision",new Long(19739407));  
			comision2DelAulaPiloto =(Comision)persistencia.getObjectoPorId("persistencia.dominio.Comision",new Long(19739947));
			comision3DelAulaPiloto =(Comision)persistencia.getObjectoPorId("persistencia.dominio.Comision",new Long(19740487));
		}catch(Exception ee){
			ee.printStackTrace();
			throw ee;
		}	
  }  
  
  public static void verificarAlumnos()throws Exception{
	  ControlParticipanteGrupo controlParticipanteGrupo = new ControlParticipanteGrupo(persistencia);
	  try{
		  Vector alumnos = controlParticipanteGrupo.getParticipantesComision(comision1DelAulaPiloto.getId(),TIPO_USUARIOS.ALUMNO);
		  System.out.println("=======================> Total de Alumnos de la Comision 1: "+alumnos.size());
		  Participante participante = null;
		  for (Iterator i = alumnos.iterator(); i.hasNext();){
			  participante = (Participante) i.next();
			  System.out.println("Apellido y Nombre: "+participante.getPersona().getNombreYApellido());
		  }
 	      alumnos = controlParticipanteGrupo.getParticipantesComision(comision2DelAulaPiloto.getId(),TIPO_USUARIOS.ALUMNO);
	      System.out.println("=======================> Total de Alumnos de la Comision 2: "+alumnos.size());
	      for (Iterator i = alumnos.iterator(); i.hasNext();){
	    	  participante = (Participante) i.next();
			  System.out.println("Apellido y Nombre: "+participante.getPersona().getNombreYApellido());
		  }
	      alumnos = controlParticipanteGrupo.getParticipantesComision(comision3DelAulaPiloto.getId(),TIPO_USUARIOS.ALUMNO);
	      System.out.println("=======================> Total de Alumnos de la Comision 3: "+alumnos.size());
	      for (Iterator i = alumnos.iterator(); i.hasNext();){
	    	  participante = (Participante) i.next();
			  System.out.println("Apellido y Nombre: "+participante.getPersona().getNombreYApellido());
		  }
	  }catch(Exception e){
		  e.printStackTrace();
		  throw e;
	  }
  }
}